<?xml version="1.0" ?>
<lz:project xmlns:lz="http://schemas.icitadel.com/Lazarus/Source.xsd"
	name="Lazarus" namespace="OR.Lazarus" owner="dbo" user="jmuharsky" businessconcept="Config" namespaceprefix="lcfg" namespaceuri="http://schemas.icitadel.com/Lazarus/Config.xsd">
	<lz:description>Defines the structure of a Config file in the Lazarus compiler.</lz:description>
	<lz:datasource location="WARREN" schema="Config" user="gkirrel" password="thx1138" />
	<lz:defaults>
		<lz:fields>
			<lz:field name="Name" alias="name" type="Varchar" size="100">
				<lz:indexes>
					<lz:index type="Primary" />
				</lz:indexes>
			</lz:field>
			<lz:field name="Description" alias="description" type="Text" />
		</lz:fields>
	</lz:defaults>
	<lz:objects>
		<lz:object name="Config" alias="config">
			<lz:description>The root node of a config document.</lz:description>
			<lz:fields>
				<lz:field name="Title" alias="title" type="Varchar" size="100" required="true" />
				<lz:field name="Folder" alias="folder" type="Varchar" size="100" />
				<lz:field name="CompiledOutput" alias="compiledoutput" type="Varchar" size="100" />
				<lz:field name="ManifestOutput" alias="manifestoutput" type="Varchar" size="100" />
			</lz:fields>
         <lz:collections>
            <lz:collection name="EngineTemplates" alias="engine-templates" object="ClassReference" />
         </lz:collections>
		</lz:object>
      <lz:object name="ClassReference" alias="class-reference" title-field="Name">
         <lz:fields>
            <lz:field name="Assembly" type="Varchar" size="100" required="true" />
            <lz:field name="Class" type="Varchar" size="100" required="true" />
         </lz:fields>
      </lz:object>
		<lz:object name="Include" alias="include">
			<lz:description>Specifies a file to copy into the output directory.</lz:description>
			<lz:fields>
				<lz:field name="Source" type="Varchar" size="100" required="true" />
			</lz:fields>
		</lz:object>
		<lz:object name="Tier" alias="tier">
			<lz:description>Defines a Tier (Data, Business, etc.) for generation.</lz:description>
			<lz:fields>
				<lz:field name="Type" alias="type" type="Varchar" size="100" />
				<lz:field name="Folder" alias="folder" type="Varchar" size="100" />
			</lz:fields>
		</lz:object>
		<lz:object name="Transform" alias="transform">
			<lz:description>Defines an XSL Transform to apply, as well as a context for the transform and file generation parameters.</lz:description>
			<lz:fields>
				<lz:field name="Type" alias="type" type="Varchar" size="255" />
				<lz:field name="OutputType" alias="output-type" type="Varchar" size="255" />
				<lz:field name="Source" alias="source" type="Varchar" size="255" />
				<lz:field name="Prefix" alias="prefix" type="Varchar" size="255" />
				<lz:field name="Suffix" alias="suffix" type="Varchar" size="255" />
				<lz:field name="Output" alias="output" type="Varchar" size="255" />
				<lz:field name="Folder" alias="folder" type="Varchar" size="255" />
				<lz:field name="Filter" alias="filter" type="Varchar" size="255" />
				<lz:field name="Overwrite" type="Varchar" size="255" />
			</lz:fields>
		</lz:object>
	</lz:objects>
	<lz:intersections>
		<lz:intersection name="ConfigTiers" alias="ConfigTiers">
			<lz:references>
				<lz:reference name="Config" object="Config" accessor="Config" alias="config" cardinality="1" />
				<lz:reference name="Tier" object="Tier" accessor="Tiers" alias="tiers" />
			</lz:references>
		</lz:intersection>
		<lz:intersection name="TierTransforms" alias="TierTransforms">
			<lz:references>
				<lz:reference name="Tier" object="Tier" accessor="Tier" alias="tier" cardinality="1" />
				<lz:reference name="Transform" object="Transform" accessor="Transforms" alias="transforms" />
			</lz:references>
			<lz:fields>
				<lz:field name="Library" type="Varchar" size="255" />
			</lz:fields>
		</lz:intersection>
		<lz:intersection name="TierIncludes" alias="TierIncludes">
			<lz:references>
				<lz:reference name="Tier" object="Tier" accessor="Tier" alias="tier" cardinality="1" />
				<lz:reference name="Include" object="Include" accessor="Includes" alias="includes" />
			</lz:references>
		</lz:intersection>
	</lz:intersections>
</lz:project>